import torch
import torch.nn as nn
import matplotlib.pyplot as plt

# Sigmoid() 函数
x = torch.linspace(-6, 6, 100)
# 从nn模块中调入Sigmoid()层，在nn.functional中有对应的函数
sigmoid = nn.Sigmoid()
y_sigmoid = sigmoid(x)

# Visualize
plt.figure(figsize=(6, 6))
plt.plot(x.data.numpy(), y_sigmoid.data.numpy(), "o-")
plt.title("Sigmoid")
plt.grid()
plt.show()

# Tanh() 函数
x = torch.linspace(-6, 6, 100)
# 从nn模块中调入Tanh()层，在nn.functional中有对应的函数
tanh = nn.Tanh()
y_Tanh = tanh(x)

# Visualize
plt.figure(figsize=(6, 6))
plt.plot(x.data.numpy(), y_Tanh.data.numpy(), "o-")
plt.title("Tanh")
plt.grid()
plt.show()

# Softplus() 函数
x = torch.linspace(-6, 6, 100)
# 从nn模块中调入Tanh()层，在nn.functional中有对应的函数
softplus = nn.Softplus()
y_softplus = softplus(x)

# Visualize
plt.figure(figsize=(6, 6))
plt.plot(x.data.numpy(), y_softplus.data.numpy(), "o-")
plt.title("Softplus")
plt.grid()
plt.show()

# ReLU() 函数
x = torch.linspace(-6, 6, 100)
# 从nn模块中调入Tanh()层，在nn.functional中有对应的函数
relu = nn.ReLU()
y_relu = relu(x)

# Visualize
plt.figure(figsize=(6, 6))
plt.plot(x.data.numpy(), y_relu.data.numpy(), "o-")
plt.title("ReLU")
plt.grid()
plt.show()

# LeakyReLU() 函数
x = torch.linspace(-6, 6, 100)
# 从nn模块中调入Tanh()层，在nn.functional中有对应的函数
leakyReLU = nn.LeakyReLU()
y_leakyReLU = leakyReLU(x)

# Visualize
# plt.figure(figsize=(6, 6))
plt.plot(x.data.numpy(), y_leakyReLU.data.numpy(), "o-")
plt.title("LeakyReLU")
plt.grid()
plt.show()

